package com.vogue.supplymall.order.domain.biz;

import com.vogue.supplymall.common.domain.dto.AlterRefundInfo;
import com.vogue.supplymall.common.domain.dto.SearchPrepayInfo;
import com.vogue.supplymall.common.domain.dto.UserInfo;

import java.math.BigDecimal;
import java.util.Map;
import java.util.List;

/**
 * The type Refund add biz.
 *
 * @aouthor: zhangliang
 * @date: Create in 2018-03-16
 */
public interface RefundBiz {

    /**
     * Add refund boolean.
     *
     * @param alterRefundInfo the alter refund info
     * @param info            the info
     * @return the boolean
     */
    Long addRefund(AlterRefundInfo alterRefundInfo, UserInfo info);

    /**
     * Update refund boolean.
     *
     * @param alterRefundInfo the alter refund info
     * @param info            the info
     * @return the boolean
     */
    Boolean updateRefund(AlterRefundInfo alterRefundInfo, UserInfo info);

    /**
     * Return prepay.
     * 返还预付款
     *
     * @param orderid  the orderid
     * @param refundid the refundid
     * @param amount   the amount
     * @param info     the info
     */
    void returnPrepay(Long orderid, Long refundid, BigDecimal amount, UserInfo info);

    /**
     * Update fulfillment long.
     *
     * @param alterRefundInfo the alter refund info
     * @return the long
     */
    Long updateFulfillment(AlterRefundInfo alterRefundInfo);

    /**
     * Get refund mode
     *
     * @param orderid the orderid
     * @return list list
     */
    List<Map<String, Object>> refundMode(Long orderid);
}
